snippet al
	$1.begin(), $1.end()$0
snippet bl
	{
		$0
	}
snippet c
	#include <algorithm>
	#include <iostream>
	#include <numeric>
	#include <unordered_map>
	#include <unordered_set>
	#include <vector>
	using namespace std;
	#define int long long
	#define umap unordered_map
	#define uset unordered_set
	template<typename T> void print(T x) {
		cout << x << '\n';
	}
	template<typename T, typename ...Ts> void print(T x, Ts ...xs) {
		cout << x << ' ';
		print(xs...);
	}
	#define dump(x) cout << #x << " = " << x << '\n';
	#define whole(x) x.begin(), x.end()
	#define for0(i, n) for(int i = 0; i < n; i++)
	#define for1(i, n) for(int i = 1; i <= n; i++)
	
	signed main() {
		ios_base::sync_with_stdio(false);
	
		$0
	}
snippet ca
	case $1:
		$0
		break;
snippet cl
	class $1 {
		$0
	};
snippet fo
	for (auto $1 : ${2:$1s}) {
		$0
	}
snippet for
	for (auto& $1 : ${2:$1s}) {
		$0
	}
snippet fo0
	for (int ${1:i} = 0; $1 < ${2:n}; $1++) {
		$0
	}
snippet fo1
	for (int ${1:i} = 1; $1 <= ${2:n}; $1++) {
		$0
	}
snippet foab
	for (int ${1:i} = $2; $1 <= $3; $1++) {
		$0
	}
snippet foae
	for (int ${1:i} = $2; $1 < $3; $1++) {
		$0
	}
snippet foba
	for (int ${1:i} = $2; $1 >= $3; $1--) {
		$0
	}
snippet if
	if ($1) {
		$0
	}
snippet la
	[&]($1) { return $2; }$0
snippet lo
	while (true) {
		$0
	}
snippet nod
	struct Node {
		vector<Node*> neighbors;
	};
snippet sor
	sort($1.begin(), $1.end(), [&](auto& a, auto& b) { return a.$2 < b.$2; });$0
snippet st
	struct $1 {
		$0
	};
snippet sw
	switch ($1) {
		$0
	}
snippet t
	#include <algorithm>
	#include <iostream>
	#include <numeric>
	#include <unordered_map>
	#include <unordered_set>
	#include <vector>
	using namespace std;
	
	int main(int argc, char **argv) {
		$0
	}
snippet tes
	int testcases; cin >> testcases;
	for (int testcase = 0; testcase < testcases; testcase++) {
		$0
	}
snippet wh
	while ($1) {
		$0
	}
